package org.apache.flink.api.common;

/**
 * @类名: ResourceStatus
 * @说明: 资源状态
 *        低(<20%)，中(20%>=~<50%)，高(50%>=~<70%)，甚高(70%>=~<90%)，极高(>90%)
 *
 * @author   leehom
 * @Date	 2024年1月23日 下午4:53:49
 * 修改记录：
 *
 * @see 	 
 */
public enum ResourceStatus {

    LOW("<20%"),  // 低

    MIDDLE("20%>=~<50%"), // 一般

    HIGH("50%>=~<70%"), // 高
    
    VERY_HIGH("70%>=~<90%"), // 甚高
    
    EXTRA_HIGH(">90%"); // 极高

    /** */
    private final String desc;

    public String getDesc() {
		return desc;
	}

	ResourceStatus(String desc) {
        this.desc = desc;
    }

	public static ResourceStatus from(int numSlotTotal, int numSlotsAvailable) {
		float status = 0;
		if(numSlotTotal!=0)
		  status = numSlotsAvailable / numSlotTotal;
		if(status< 0.2) 
			return LOW;
		if(status>= 0.2 && status< 0.5)
			return MIDDLE;
		if(status>= 0.5 && status< 0.7)
			return HIGH;
		if(status>= 0.7 && status< 0.9)
			return VERY_HIGH;
		if(status>= 0.9)
			return VERY_HIGH;
		return LOW;
	}
}
